unit LMFC;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, Inifiles, ComCtrls;

type
  TFormLMFC = class(TForm)
    GroupBox1: TGroupBox;
    RB_Data: TRadioButton;
    RB_CRZ: TRadioButton;
    GroupBox2: TGroupBox;
    MaskEdit1: TMaskEdit;
    MaskEdit2: TMaskEdit;
    Label1: TLabel;
    Label2: TLabel;
    BT1: TButton;
    Bt2: TButton;
    BT3: TButton;
    BT4: TButton;
    StatusBar1: TStatusBar;
    procedure BT4Click(Sender: TObject);
    procedure RB_DataClick(Sender: TObject);
    procedure RB_CRZClick(Sender: TObject);
    procedure BT1Click(Sender: TObject);
    procedure MaskEdit1Exit(Sender: TObject);
    procedure MaskEdit2Exit(Sender: TObject);
    procedure RB_DataKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure RB_CRZKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure MaskEdit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure MaskEdit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Bt2Click(Sender: TObject);
    procedure BT3Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
    procedure LMFHourGlass;
    procedure LMFDefault;
  public
    { Public declarations }
  end;

var
  FormLMFC: TFormLMFC;
  tipoLeitura:Char;

implementation

uses declaracoes, Principal, funcoesapoio;
{$R *.dfm}

procedure TFormLMFC.BT4Click(Sender: TObject);
begin
        Close;
end;

procedure TFormLMFC.RB_DataClick(Sender: TObject);
begin
        MaskEdit1.EditMask := '99/99/9999;1;_';
        MaskEdit2.EditMask := '99/99/9999;1;_';
        MaskEdit1.Clear; MaskEdit2.Clear;
end;

procedure TFormLMFC.RB_CRZClick(Sender: TObject);
begin
        MaskEdit1.EditMask := '9999;1;_';
        MaskEdit2.EditMask := '9999;1;_';
        MaskEdit1.Clear; MaskEdit2.Clear;

end;

procedure TFormLMFC.BT1Click(Sender: TObject);
begin
        LMFHourGlass;
        // Leitura da Memoria Fiscal por Data
        if RB_Data.Checked then
        begin
                FormPrincipal.Statusbar1.Panels[0].Text:='Leitura da Memória Fiscal - Data'; WaitProcess;
                Resposta := ECF_LeituraMemoriaFiscalDataMFD(Maskedit1.Text, Maskedit2.Text, FormPrincipal.LMF);
                FormPrincipal.StatusBar1.Panels[2].Text:=IntToStr(Resposta);

        end
        // Leitura da Memoria Fiscal por Redução
        else if RB_CRZ.Checked then
        begin
                FormPrincipal.Statusbar1.Panels[0].Text:='Leitura da Memória Fiscal - Redução'; WaitProcess;
                Resposta:=ECF_LeituraMemoriaFiscalReducaoMFD(Maskedit1.Text, Maskedit2.Text, FormPrincipal.LMF);
                FormPrincipal.StatusBar1.Panels[2].Text:=IntToStr(Resposta);
        end;
        VerificaRetornoFuncao(Resposta);
        LMFDefault;
end;

procedure TFormLMFC.MaskEdit1Exit(Sender: TObject);
var crz: Integer;
begin
        if RB_Data.Checked then
        begin
                try
                        StrToDate(MaskEdit1.Text)
                except
                        ShowMessage('Data inválida!');
                        MaskEdit1.SetFocus;
                end;
        end
        else if RB_CRZ.Checked then
        begin
                try
                        Crz := StrToInt(Trim(MaskEdit1.Text));
                        MaskEdit1.Text := FormatFloat(StringOfChar('0', 4), CRZ);
                except
                        MaskEdit1.Text:='0001';
                end;
        end;

end;

procedure TFormLMFC.MaskEdit2Exit(Sender: TObject);
var crz: Integer;
begin
        if RB_Data.Checked then
        begin
                try
                        StrToDate(MaskEdit2.Text)
                except
                        ShowMessage('Data inválida!');
                        MaskEdit2.SetFocus;
                end;
        end
        else if RB_CRZ.Checked then
        begin
                try
                        Crz := StrToInt(Trim(MaskEdit2.Text));
                        MaskEdit2.Text := FormatFloat(StringOfChar('0', 4), CRZ);
                except
                        MaskEdit2.Text:='0001';
                end;
        end;

end;

procedure TFormLMFC.RB_DataKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
        if Key = VK_RETURN then GroupBox1.SetFocus;
end;

procedure TFormLMFC.RB_CRZKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
        if KEY = VK_RETURN then GroupBox1.SetFocus;

end;

procedure TFormLMFC.MaskEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
        if Key = VK_RETURN then MaskEdit2.SetFocus;
end;

procedure TFormLMFC.MaskEdit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
        if Key = VK_RETURN then BT1.SetFocus;
end;

procedure TFormLMFC.Bt2Click(Sender: TObject);
var Arquivo:TextFile;
begin
        StatusBar1.Panels[0].Text:='Aguarde...'; Refresh;
        StatusBar1.Panels[0].Text:=' ';Refresh;
        LMFHourGlass;
        // Leitura da Memoria Fiscal por Data
        if RB_Data.Checked then
        begin
                FormPrincipal.Statusbar1.Panels[0].Text:='Leitura da Memória Fiscal - Data';
                Resposta:=ECF_LeituraMemoriaFiscalSerialDataMFD(MaskEdit1.Text, MaskEdit2.Text,TipoLeitura); WaitProcess;
                if resposta=1 then StatusBar1.Panels[0].Text:='Arquivo gerado C:\RETORNO.TXT';
        end
        else if RB_CRZ.Checked  then
        begin
                FormPrincipal.Statusbar1.Panels[0].Text:='Leitura da Memória Fiscal - Redução';
                Resposta:=ECF_LeituraMemoriaFiscalSerialReducaoMFD(MaskEdit1.Text, MaskEdit2.Text,TipoLeitura); WaitProcess;
                if resposta=1 then StatusBar1.Panels[0].Text:='Arquivo gerado C:\RETORNO.TXT';
        end;
        VerificaRetornoFuncao(Resposta);

        // NESTE PONTO SERÁ NECESSÁRIO INCLUIR A ASSINATURA DA SOFTWARE HOUSE
        // REGISTRO EAD
        If FileExists('C:\RETORNO.TXT') then
        begin
                AssignFile(Arquivo,'C:\RETORNO.TXT');
                Append(Arquivo);
                Write(Arquivo,'EAD - Inserir a Assinatura Digital da Software House');
                CloseFile(Arquivo);
        end;
        LMFDefault;

end;

procedure TFormLMFC.BT3Click(Sender: TObject);
var Arquivo:TextFile;
begin
        LMFHourGlass;
        // Leitura da Memoria Fiscal por Data ou Leitura da Memoria Fiscal por Redução
        if RB_Data.Checked or RB_CRZ.Checked  then
        begin
                if RB_Data.Checked then FormPrincipal.Statusbar1.Panels[0].Text:='Leitura da Memória Fiscal - Data'
                else FormPrincipal.Statusbar1.Panels[0].Text:='Leitura da Memória Fiscal - Redução';

                ECF_DownloadMF('C:\SWEDA\MFISCAL.BIN'); WaitProcess;
                Resposta:=ECF_ReproduzirMemoriaFiscalMFD('2',MaskEdit1.Text, MaskEdit2.Text,'C:\SWEDA\SAIDA.TXT','C:\SWEDA\MFiscal.BIN'); WaitProcess;
                if resposta=1 then StatusBar1.Panels[0].Text:='Arquivo gerado C:\SWEDA\SAIDA.TXT';
        end;
        VerificaRetornoFuncao(Resposta);

        // NESTE PONTO SERÁ NECESSÁRIO INCLUIR A ASSINATURA DA SOFTWARE HOUSE
        // REGISTRO EAD
        If FileExists('C:\SWEDA\SAIDA.TXT') then
        begin
                AssignFile(Arquivo,'C:\SWEDA\SAIDA.TXT');
                Append(Arquivo);
                Write(Arquivo,'EAD - Inserir a Assinatura Digital da Software House');
                CloseFile(Arquivo);
        end;
        LMFDefault;

end;

procedure TFormLMFC.FormActivate(Sender: TObject);
var ArqIni: TIniFile;
begin
        TipoLeitura := '0';
        FormLMFC.Caption:='LMFS';
        Bt3.Enabled:=False;

        if FormPrincipal.LMF='C' then
        begin
                FormLMFC.Caption:='LMFC';
                TipoLeitura:='1';
                Bt3.Enabled:=True;
        end;

        Refresh;

        // Localiza o arquivo SWMFD.INI
        // Para desabilitar a geração do Registro EAD pela DLL
        if FileExists('C:\Windows\System32\SWMFD.INI') then
        begin
            ArqIni := TIniFile.Create('C:\Windows\System32\SWMFD.INI');
            ArqIni.EraseSection('ASSINATURA DIGITAL');

            ArqIni.WriteString('ASSINATURA DIGITAL', 'FITA-DETALHE', 'NAO');
            ArqIni.WriteString('ASSINATURA DIGITAL', 'LEIUTRA MEMÓRIA FISCAL', 'NAO');
            ArqIni.WriteString('ASSINATURA DIGITAL', 'COTEPE', 'NAO');
            ArqIni.WriteString('ASSINATURA DIGITAL', 'MEMÓRIA FISCAL', 'NAO');
            ArqIni.WriteString('ASSINATURA DIGITAL', 'MEMÓRIA DE FITA-DETALHE', 'NAO');
            ArqIni.WriteString('ASSINATURA DIGITAL', 'SOFTWARE BÁSICO', 'NAO');
           ArqIni.Free;
        end;
end;

procedure TFormLMFC.LMFDefault;
begin
        FormLMFC.Cursor:=crDefault;
        GroupBox1.Cursor:=crDefault;
        GroupBox2.Cursor:=crDefault;
        bt1.Cursor:=crDefault;
        bt2.Cursor:=crDefault;
        bt3.Cursor:=crDefault;
        bt4.Cursor:=crDefault;
end;
procedure TFormLMFC.LMFHourGlass;
begin
        FormLMFC.Cursor:=crHourGlass;
        GroupBox1.Cursor:=crHourGlass;
        GroupBox2.Cursor:=crHourGlass;
        bt1.Cursor:=crHourGlass;
        bt2.Cursor:=crHourGlass;
        bt3.Cursor:=crHourGlass;
        bt4.Cursor:=crHourGlass;
end;


end.
